Cannot read property 'includes' of nullに対処する
filterなどでchannel.topic.includes('foo')を書くとCannot read property 'includes' of nullのようなエラーが出る
ドキュメントを見るとType: ?stringと書かれていて、このstringの前にある?がnullの可能性を表している あとはテキストチャンネル以外も含まれる.channels.cacheなどに対して実行するとボイスチャンネルで違うエラーもでる
Cannot read property 'includes' of undefinedというエラーだが、ボイスチャンネルなどに.topicはないので起こる
メモ:Discordの仕様で一度でもトピックを変更したことがあるチャンネルだと全て消してもnullではなく''になる
Node.js v14から使えるJavaScriptの新しい構文もある
上の書き方だと長くて書くのが大変なので(特に複数つながる場合とか)、短く書ける構文が追加された
channel.topic?.includes('foo')のようにnullである可能性がある部分の最後に?を書く
こうすると上のと同じような動作をするようになる
これはDiscord.js固有の問題ではなくて、nullの可能性があるときによく出くわすことなので伝統的な回避方法がある
channel.topic && channel.topic.includes('foo')
これはchannel.topicがある場合のみchannel.topic.includes('foo')を実行するような動作をする